diff --git a/config b/config
new file mode 100644
index 0000000..8127a4b
--- /dev/null
+++ b/config
@@ -0,0 +1,159 @@
+#!/bin/bash
+#
+# config - for tod
+#
+# Copyright 2019 Luigi Santivetti <luigi.santivetti@gmail.com>
+
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+# Absolute path to where this script lives
+declare -rg script_dir="$(get_script_dir)"
+
+# Runtime timestamp of when this script was executed
+declare -rg script_now="$(get_script_now)"
+
+# Version file name
+declare -rg __version="version"
+
+# Module staging area name
+declare -rg staging="staging"
+
+# Name of this host's instance, it defaults to localhost
+declare -rg def_hostname="localhost"
+declare -rg host_name="${HOST_NAME:-$def_hostname}"
+
+# Switch for enabling debug features, it defaults to debug
+declare -rg release="release"
+declare -rg debug="debug"
+declare -rg instance_mode="${INSTANCE_MODE:-$debug}"
+
+# Force to use also blacklisted modules
+declare -rgi modall="${MODALL:-0}"
+
+# Default answer instead of waiting for user input
+declare -rg answer=${DEFANS:-}
+
+# Runtime enabled list of modules
+declare -ag MODULES=( )
+
+# Blacklist modules
+declare -arg BLMODULES=( "test1" "test2" )
+
+# Runtime running option
+declare -Ag OPTIONS=( \
+	[check]=0 [watch]=0 [fetch]=0 [doall]=0 [doins]=0 \
+	[upins]=0 [upmod]=0 [upall]=0 [clmod]=0 [clins]=0 \
+)
+
+# Instance tree
+declare -rg def_instance_d="$script_dir/$host_name"
+declare -rg instance_d="${INSTANCE_DIR:-$def_instance_d}"
+declare -rg docker_d="$instance_d/docker"
+declare -rg rootfs_d="$instance_d/rootfs"
+
+# Module tree
+declare -rg module_d="$script_dir/module"
+declare -rg scheme_sh="scheme.sh"
+declare -rg holder_sh="holder.sh"
+declare -rg module_sh="module.sh"
+
+# Runtime password file
+declare -rg passwd_sh="${PASSWD_F:-}"
+
+# Module common files
+declare -rg common_sh="$module_d/common.sh"
+declare -rg manifest_f="$script_dir/MANIFEST"
+declare -rg uninstall_f="$instance_d/uninstall.sh"
+
+# Set of regular expressions for accomplishing module validation
+declare -rg rex_legal_holder_token="_([0-9]|[A-Z])+"
+declare -rg rex_legal_holder_variable="($rex_legal_holder_token)+_"
+declare -rg rex_legal_holder_assignment_op="[\+]?="
+declare -rg rex_legal_holder_assignment_lhs=\
+"$rex_legal_holder_variable$rex_legal_holder_assignment_op\""
+declare -rg rex_illegal_holder_assignment_rhs=".+[^\\]\".+"
+declare -rg dynamic_typedef="local -r"
+declare -rg rex_legal_dynamic_typedef="local[[:space:]]\-r"
+declare -rg rex_legal_dynamic_assignment_lhs=\
+"$rex_legal_dynamic_typedef $rex_legal_holder_assignment_lhs"
+declare -rg head_tag=">>>>>"
+declare -rg foot_tag="<<<<<"
+declare -rg rex_legal_file_header_tag="#[[:space:]]$head_tag[[:space:]].*"
+declare -rg rex_legal_file_footer_tag="#[[:space:]]$foot_tag[[:space:]].*"
+declare -rg rex_legal_manifest_hook_begin="@@MIRROR_BEGIN@@"
+declare -rg rex_legal_manifest_hook_ended="@@MIRROR_ENDED@@"
+
+# Credits
+declare -rg credits_year="2019"
+declare -rg credits_author="Luigi Santivetti"
+declare -rg credits_email="luigi.santivetti@gmail.com"
+declare -rg credits_vers="1.0 beta"
+
+declare -rg license="\
+# Copyright ${credits_year} ${credits_author} <${credits_email}>
+
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the \"Software\"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+
+# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+# This file is autogenerated with tod ${credits_vers} and manual edit can break
+# your instance. Update this file using tod instead, check tod --help."
+
+# Logging and debug
+declare -irg LOG_D="${LOG_D:-0}"
+declare -irg LOG_I="${LOG_I:-1}"
+declare -irg LOG_W="${LOG_W:-1}"
+declare -irg LOG_X="${LOG_X:-1}"
+
+# Return codes
+declare -ir s_ok=0
+declare -ir s_err=1
+declare -ir s_unbound=2
+declare -ir s_maybe_unbound=3
+declare -ir s_bound=4
+declare -ir s_null=5
+declare -ir s_unk_stdout=6
+declare -ir s_unk_stderr=7
+declare -ir s_inv_lhs=8
+declare -ir s_err2=9
+declare -ir s_err3=10
+declare -ir s_err4=11
+declare -ir s_err5=12
+declare -ir s_err6=13
+declare -ir s_err7=14
+declare -ir s_err8=15
+declare -ir s_err9=16
+declare -ir s_disabled=17
+declare -ir s_off_broken=18
+declare -ir s_off_usable=19
+declare -ir s_maybe_bound=20
